package com.pureut.storage.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.pureut.storage.domain.SubcontractReceipt;
import com.pureut.storage.dto.PickingRestDbDto;
import com.pureut.storage.dto.SubcontractReceiptDto;
import com.pureut.storage.export.SubcontractPurchaseReceiptExport;
import com.pureut.storage.vo.*;

import java.util.List;

/***
 *
 * Author:C
 * Date:2022/12/27 16:34
 * @DESC
 */
public interface SubcontractReceiptService extends IService<SubcontractReceipt> {

    /**
     * 委外入库列表
     */
    List<SubcontractReceiptDto> getReceiptList(SubcontractReceiptVo subcontractReceiptVo);

    /**
     * 委外入库新增
     */
    boolean addSubcontractReceipt(SubcontractReceiptVo subcontractReceiptVo) throws Exception;

    /**
     * 新增委外入库（自动新增 其他模块插入数据时使用）
     * @param subcontractReceiptOtherVo
     * @return
     * @throws Exception
     */
    boolean addOtherSubcontractReceipt(SubcontractReceiptOtherVo subcontractReceiptOtherVo) throws Exception;

    /**
     * 关结委外入库
     */
    boolean close(SubcontractReceiptVo subcontractReceiptVo);

    /**
     * 查看
     */
    SubcontractReceiptDto getView(Long id);

    /**
     * 修改委外入库
     */
    boolean updateSubcontractReceipt(SubcontractReceiptVo subcontractReceiptVo);

    /**
     * 删除委外入库
     */
    boolean deleteSubcontractReceipt(String idStr);

    /**
     * 入库送检
     */
    boolean subcontractWarehousInspection(SubcontractWarehousInspectionVo subcontractWarehousInspectionVo) throws Exception;

    /**
     * 导出
     */
    List<SubcontractPurchaseReceiptExport> getInfoExport(SubcontractReceiptVo subcontractReceiptVo);

    /**
     * 委外入库（pda）
     */
    PickingRestDbDto subcontractPda(PickingRestDbVo pickingRestDbVo);

    /**
     * 委外入库状态及数据修改（委外订单关结时 fegin调用）
     * @param updateReceiptStatusVo
     * @return
     */
    boolean updateSubcontractReceiptStatus(UpdateReceiptStatusVo updateReceiptStatusVo);
}
